#!/usr/bin/python3
# -*- coding: utf-8 -*-


from importlib import import_module


def create_instance(
        class_name: str,
        params: dict = None
):
    """根据类型名和参数创建指定类型的实例。

    :param class_name: 完整类型名，包含包和模块。
    :param params: 构造类型实例的参数值。
    """
    if not class_name or '.' not in class_name:
        raise ValueError('Illegal class name: ' + repr(class_name))
    if not params:
        params = dict()

    mp = class_name.replace(' ', '').rsplit('.', 1)
    p_name, c_name, *etc = (*mp, '', '',)
    if not p_name or not c_name:
        raise ValueError('Illegal class name: ' + class_name)
    p = import_module(p_name)
    c = getattr(p, c_name, None)
    if not c:
        raise ValueError('cannot import class: ' + c_name)

    return c(**params)
